01
构造函数初探
什么是构造函数?为什么需要构造函数?构造函数的基本语法与特点。
基础入门
02
默认构造函数
编译器自动生成的默认构造函数、自定义默认构造函数、=default与=delete。
默认C++11
03
带参构造函数
参数化构造、构造函数重载、默认参数在构造函数中的应用。
重载参数
04
初始化列表
为什么需要初始化列表?初始化列表与构造函数体内赋值的区别、必须使用初始化列表的场景。
初始化性能
05
拷贝构造函数
什么是拷贝构造函数?浅拷贝与深拷贝、拷贝构造函数的调用时机。
拷贝语义
06
深拷贝与浅拷贝
默认拷贝构造函数的陷阱、自定义拷贝构造函数实现深拷贝、资源管理。
深拷贝资源
07
移动构造函数 (C++11)
移动语义基础、移动构造函数语法、移动构造函数与拷贝构造函数的区别。
移动语义C++11
08
委托构造函数 (C++11)
什么是委托构造函数?如何减少代码重复?委托构造的注意事项。
委托C++11
09
转换构造函数
隐式类型转换、explicit关键字、转换构造函数的应用场景。
转换explicit
10
析构函数基础
什么是析构函数?析构函数的语法与特点、析构函数的调用顺序。
析构基础
11
析构函数与资源释放
RAII思想、在析构函数中释放动态内存、关闭文件句柄。
RAII资源
12
虚析构函数
为什么基类析构函数需要是虚函数?虚析构函数的实现与作用。
多态虚函数
13
纯虚析构函数
纯虚析构函数的语法、为什么纯虚析构函数也需要实现?
抽象类细节
14
构造与析构的调用顺序
继承体系下的构造顺序、成员对象的构造顺序、析构顺序与构造相反。
顺序继承
15
禁止拷贝与移动
=delete的应用、不可拷贝类的设计、单例模式中的拷贝控制。
delete单例
16
三/五法则 (Rule of Three/Five)
什么是三/五法则?为什么需要遵循?如何实现?
法则最佳实践
17
零法则 (Rule of Zero)
RAII与零法则、智能指针与零法则、现代C++的最佳实践。
RAII现代C++
18
构造函数中的异常处理
构造函数中抛出异常的风险、RAII与异常安全、两段式构造。
异常安全
19
析构函数中的异常处理
为什么析构函数不应该抛出异常?noexcept析构函数。
noexcept异常
20
静态对象的构造与析构
静态局部对象、静态全局对象、静态对象的初始化顺序问题。
静态生命周期
21
构造函数的私有化与工厂模式
私有构造函数、静态工厂方法、单例模式的实现。
工厂单例
22
复制省略与返回值优化 (RVO/NRVO)
什么是复制省略?编译器如何优化?强制复制省略(C++17)。
优化C++17
23
继承中的构造与析构
派生类构造函数调用基类构造函数、继承中的拷贝与移动控制。
继承派生
24
多重继承下的构造与析构
菱形继承问题、虚继承的构造顺序、虚继承的析构顺序。
多重继承虚继承
25
成员对象的构造与析构
成员对象的初始化顺序、成员初始化列表与成员对象、成员对象的析构。
成员顺序
26
构造函数与类型推导 (C++17)
CTAD(类模板参数推导)、推导指引、构造函数与auto。
CTADC++17
27
constexpr构造函数 (C++11/14/17)
constexpr构造函数语法、编译期构造对象、constexpr与字面类型。
constexpr编译期
28
构造函数与智能指针
在构造函数中管理动态资源、shared_from_this、enable_shared_from_this。
智能指针shared_ptr
29
构造与析构的调试技巧
在构造/析构函数中添加日志、使用RAII包装器跟踪生命周期、内存泄漏检测。
调试RAII
30
综合案例:设计一个String类
完整实现String类的构造、拷贝、移动、析构、以及运算符重载。
实战String